Response Structure
When a job produces results, the API POSTs them to your configured results_endpoint in a paged envelope. Each page carries a results array of EReceipt objects.
Results Envelope
| Field | Type | Description |
|---|---|---|
jobId | string | The job that produced these results |
clientUserId | string or null | Your internal user identifier, if one was supplied |
clientEmailHash | string or null | Hash of the user's email address, if one was supplied |
pageNumber | number | This page, counting from 1 |
totalPages | number | Total pages for the whole job |
results | array | EReceipt objects for this page |
{
"jobId": "98765",
"clientUserId": "user_42",
"clientEmailHash": "abc123...",
"pageNumber": 1,
"totalPages": 3,
"results": []
}
Paging
Results are split across pages, and each page arrives as a separate POST to your endpoint. totalPages covers the whole job, so a job may deliver its pages from more than one worker and they may arrive out of order. Use pageNumber and totalPages to tell when you have received everything.
A job that finds nothing still delivers one page with an empty results array.
Failure Envelope
If a job fails, you receive an error object in place of results.
| Field | Type | Description |
|---|---|---|
jobId | string | The job that failed |
clientUserId | string or null | Your internal user identifier, if one was supplied |
clientEmailHash | string or null | Hash of the user's email address, if one was supplied |
error.code | integer | Numeric error code |
error.message | string | Human-readable error description |
pageNumber | number | Present only when the failure occurred partway through paging |
Fields Controlled by Your Configuration
Two configuration settings change what a receipt carries. See configuration.md.
| Setting | Affects | When false | When true |
|---|---|---|---|
enable_pii_scrubbing | ereceiptEmailSubject, ereceiptRawHTMLtext, ereceiptRawHTML | ereceiptRawHTML holds the raw HTML body; ereceiptRawHTMLtext is empty | PII is redacted from ereceiptEmailSubject and ereceiptRawHTMLtext. ereceiptRawHTML is empty, and the body is delivered as plain text in ereceiptRawHTMLtext |
return_eml | ereceiptRawEML, ereceiptRawHTML | ereceiptRawEML is null; the email body is delivered as HTML | ereceiptRawEML holds the full raw EML, and the HTML body is not delivered |
A receipt carries the email body in one form only. With return_eml off you get the HTML body, scrubbed to plain text if enable_pii_scrubbing is on. With return_eml on you get the raw EML instead, and the HTML fields are empty.
EReceipt Object
Every field below is always present as a JSON key. A field that could not be extracted is null rather than absent.
Identity
| Field | Type | Description | Example |
|---|---|---|---|
blinkReceiptId | string | Unique identifier assigned by BlinkReceipt | "85n24efb-6ca3-532m-9170-9410d9e7e" |
ereceiptEmailId | string or null | Message ID from the email provider | "<msg-id@mail.gmail.com>" |
appVersion | string | Version of the parsing application that processed this receipt | "2.26.0" |
Email Metadata
| Field | Type | Description | Example |
|---|---|---|---|
emailTimestamp | string or null | When the email was received, formatted yyyy-MM-dd HH:mm | "2024-08-01 09:55" |
emailTimestampISO | string or null | The same timestamp as an ISO 8601 string | "2024-08-01T09:55:00.000Z" |
parseTimestamp | string or null | When the receipt was parsed | "2024-08-01 10:02" |
ereceiptEmailProvider | string or null | Email provider used by the end user | "gmail" |
ereceiptMerchantEmail | string or null | Sender address of the retailer email, as detected during extraction | "auto-confirm@amazon.com" |
ereceiptEmailSubject | string or null | Subject line of the email. Redacted when enable_pii_scrubbing is on | "Your Amazon.com order" |
Receipt Dates and Times
These fields use confidence objects — see Confidence Object.
| Field | Type | Description | Example |
|---|---|---|---|
receiptDate | confidence object | Purchase date, formatted yyyy-MM-dd | { "value": "2024-08-01", "confidence": 100 } |
receiptTime | confidence object | Purchase time, formatted HH:mm | { "value": "09:55", "confidence": 100 } |
deliveryDate | confidence object | Delivery date, formatted yyyy-MM-dd | { "value": "2024-08-04", "confidence": 100 } |
Merchant Information
| Field | Type | Description | Example |
|---|---|---|---|
bannerId | integer | Internal merchant identifier | 9136 |
merchantName | confidence object | Store or brand name | { "value": "Amazon", "confidence": 100 } |
clientMerchantName | confidence object | Client-configured merchant name override | { "value": "Amazon US", "confidence": 100 } |
ereceiptFulfilledBy | string or null | Fulfillment service name | "Amazon" |
ereceiptSubMerchant | string or null | Sub-merchant name within a marketplace | "TechSeller LLC" |
ereceiptPOSSystem | string or null | Payment or point-of-sale platform that processed the order. Rarely populated | "Squareup.com" |
Store Location
| Field | Type | Description | Example |
|---|---|---|---|
storeAddress | string or null | Street address | "410 Terry Ave N" |
storeCity | string or null | City | "Seattle" |
storeState | string or null | State or region | "WA" |
storeZip | string or null | Postal code | "98109" |
storePhone | string or null | Phone number | "206-266-1000" |
Order Information
| Field | Type | Description | Example |
|---|---|---|---|
ereceiptOrderNumber | string or null | Order or confirmation number | "113-1234567-8901234" |
ereceiptOrderStatus | string or null | Status of the order | "completed" |
ereceiptPurchaseType | string or null | Fulfillment method | "Delivery" |
cancellation | boolean | Whether the email represents a cancellation | false |
preorder | boolean | Whether the order is a preorder | false |
Financial Totals
| Field | Type | Description | Example |
|---|---|---|---|
total | confidence object | Grand total charged | { "value": 59.99, "confidence": 100 } |
subtotal | confidence object | Subtotal before tax and shipping | { "value": 54.99, "confidence": 100 } |
taxes | confidence object | Tax amount | { "value": 4.40, "confidence": 100 } |
fees | confidence object | Additional fees | { "value": 1.50, "confidence": 100 } |
tip | confidence object | Tip amount | { "value": 3.00, "confidence": 100 } |
ereceiptShippingCosts | number, string or null | Shipping and handling charges. Not a confidence object | 0.00 |
currencyCode | string | ISO 4217 currency code. Defaults to USD | "USD" |
Payment
| Field | Type | Description | Example |
|---|---|---|---|
paymentChannel | string or null | How the purchase was made | "online" |
transactionType | string or null | Type of transaction | "purchase" |
last4CC | string or null | Last four digits of the payment card | "1234" |
paymentMethods | array or null | Payment methods used — see Payment Method | — |
Parsing and Verification
| Field | Type | Description | Example |
|---|---|---|---|
parsingMethod | string | How the email was parsed: template or generic | "template" |
isEReceipt | boolean | Whether the email was identified as a purchase receipt | true |
Raw Content
| Field | Type | Description |
|---|---|---|
ereceiptRawHTML | string or null | Raw HTML body of the email. Not populated when either enable_pii_scrubbing or return_eml is on |
ereceiptRawHTMLtext | string | Plain-text body with PII redacted. Populated only when enable_pii_scrubbing is on |
ereceiptRawEML | string or null | Full raw EML content. Populated only when return_eml is on |
Products
| Field | Type | Description |
|---|---|---|
products | array or null | Line items — see Products Array |
Products Array
Each EReceipt object contains a products array of EReceiptProduct objects.
| Field | Type | Description | Example |
|---|---|---|---|
productName | string or null | Full display name of the product | "Logitech MX Master 3 Wireless Mouse" |
brand | string or null | Product brand | "Logitech" |
category | string or null | Taxonomy path for the product | "Electronics > Computer Accessories" |
size | string or null | Size or variant descriptor | "Large" |
upc | string or null | Universal Product Code | "097855149138" |
imgUrl | string or null | URL of the product thumbnail image | "https://images.example.com/product.jpg" |
productUrl | string or null | URL of the product page | "https://amazon.com/dp/B07S395RWD" |
productNumber | confidence object | Retailer's SKU or item number | { "value": "B07S395RWD", "confidence": 100 } |
productDescription | confidence object | Short product description | { "value": "Wireless Mouse", "confidence": 100 } |
quantity | confidence object | Number of units purchased | { "value": 1, "confidence": 100 } |
unitPrice | confidence object | Price per unit | { "value": 54.99, "confidence": 100 } |
totalPrice | confidence object | Total price for this line item | { "value": 54.99, "confidence": 100 } |
fullPrice | confidence object | Undiscounted price | { "value": 59.99, "confidence": 100 } |
uom | string or null | Unit of measure | "each" |
purchaseStatus | string or null | Purchase status for this item | "confirmed" |
subProducts | array or null | Components of a bundled item — see Sub-Products | — |
possibleProducts | array or null | Candidate matches when the product could not be identified confidently — see Possible Products | — |
Sub-Products
subProducts holds the components of a bundled item, such as the individual pieces of a meal deal or a multi-pack.
Each entry has the same shape as an EReceiptProduct, but only three fields are ever populated. The rest are null.
| Field | Type | Description | Example |
|---|---|---|---|
productDescription | confidence object | Description of the component | { "value": "Large Fries", "confidence": 100 } |
quantity | confidence object | Number of units. Defaults to 1 | { "value": 1, "confidence": 100 } |
totalPrice | confidence object | Price for this component | { "value": 2.49, "confidence": 100 } |
Sub-products do not nest further — a sub-product's own subProducts is always null.
"subProducts": [
{
"productDescription": { "value": "Large Fries", "confidence": 100 },
"quantity": { "value": 1, "confidence": 100 },
"totalPrice": { "value": 2.49, "confidence": 100 }
}
]
Possible Products
When a product cannot be matched to our catalogue with confidence, possibleProducts holds the candidate matches, ranked by probability.
Each entry has the same shape as an EReceiptProduct, but only the fields below are populated. The rest are null, because a candidate match describes a catalogue product rather than a purchased line item — it carries no price, quantity or order detail.
| Field | Type | Description | Example |
|---|---|---|---|
productName | string or null | Name of the candidate product | "Logitech MX Master 3" |
brand | string or null | Candidate brand | "Logitech" |
category | string or null | Taxonomy path for the candidate | "Electronics > Computer Accessories" |
size | string or null | Size or variant descriptor | "Large" |
upc | string or null | Universal Product Code | "097855149138" |
imgUrl | string or null | Thumbnail image for the candidate | "https://images.example.com/product.jpg" |
probability | number or null | Match confidence from 0 to 1 | 0.92 |
"possibleProducts": [
{
"productName": "Logitech MX Master 3",
"brand": "Logitech",
"category": "Electronics > Computer Accessories",
"size": null,
"upc": "097855149138",
"imgUrl": "https://images.example.com/product.jpg",
"probability": 0.92
}
]
Payment Method
Each object in the paymentMethods array describes one method used.
| Field | Type | Description | Example |
|---|---|---|---|
method | string or null | Payment method | "credit" |
cardType | string or null | Card type | "visa" |
Confidence Object
Many fields are returned as confidence objects rather than plain values. This lets you assess the reliability of each extracted data point.
| Field | Type | Description |
|---|---|---|
value | string or number | The extracted value |
confidence | integer | Confidence score from 0 (lowest) to 100 (highest) |
Example:
{
"value": 59.99,
"confidence": 100
}
Annotated Example
{
"jobId": "98765",
"clientUserId": "user_42",
"clientEmailHash": "abc123...",
"pageNumber": 1,
"totalPages": 1,
"results": [
{
"blinkReceiptId": "85n24efb-6ca3-532m-9170-9410d9e7e",
"appVersion": "2.26.0",
"receiptDate": {
"value": "2024-08-01",
"confidence": 100
},
"receiptTime": null,
"emailTimestamp": "2024-08-01 09:55",
"emailTimestampISO": "2024-08-01T09:55:00.000Z",
"parseTimestamp": "2024-08-01 10:02",
"ereceiptEmailId": "<msg-id@mail.gmail.com>",
"ereceiptEmailProvider": "gmail",
"ereceiptMerchantEmail": "auto-confirm@amazon.com",
"ereceiptEmailSubject": "Your Amazon.com order has shipped",
"bannerId": 9136,
"merchantName": {
"value": "Amazon",
"confidence": 100
},
"ereceiptOrderNumber": "113-1234567-8901234",
"ereceiptOrderStatus": "completed",
"ereceiptPurchaseType": "Delivery",
"cancellation": false,
"preorder": false,
"currencyCode": "USD",
"subtotal": {
"value": 54.99,
"confidence": 100
},
"taxes": {
"value": 4.40,
"confidence": 100
},
"ereceiptShippingCosts": 0.00,
"total": {
"value": 59.39,
"confidence": 100
},
"parsingMethod": "template",
"isEReceipt": true,
"ereceiptRawHTML": "<html>...</html>",
"ereceiptRawHTMLtext": "",
"ereceiptRawEML": null,
"products": [
{
"productName": "Logitech MX Master 3 Wireless Mouse",
"brand": "Logitech",
"category": "Electronics > Computer Accessories",
"upc": "097855149138",
"imgUrl": "https://images.example.com/product.jpg",
"productNumber": {
"value": "B07S395RWD",
"confidence": 100
},
"productDescription": {
"value": "Wireless Mouse, Darkfield, Ergonomic",
"confidence": 100
},
"quantity": {
"value": 1,
"confidence": 100
},
"unitPrice": {
"value": 54.99,
"confidence": 100
},
"totalPrice": {
"value": 54.99,
"confidence": 100
},
"purchaseStatus": "shipped",
"subProducts": null,
"possibleProducts": [
{
"productName": "Example Wireless Mouse, Model A",
"brand": "Example Brand",
"category": "Electronics > Computer Accessories",
"size": null,
"upc": "000000000001",
"imgUrl": "https://images.example.com/candidate-a.jpg",
"probability": 0.62
},
{
"productName": "Example Wireless Mouse, Model B",
"brand": "Example Brand",
"category": "Electronics > Computer Accessories",
"size": null,
"upc": "000000000002",
"imgUrl": "https://images.example.com/candidate-b.jpg",
"probability": 0.31
}
]
}
],
"paymentMethods": [
{
"method": "credit",
"cardType": "visa"
}
],
"last4CC": "1234"
}
]
}
For more worked examples, see Sample Responses. For errors returned by an API request, see error-handling.md.